This invention relates generally to the field of computer systems. More particularly, a system and method are provided for dynamically selecting a level or amount of compression to be applied to data to be transmitted from one computer system to another.
When a user or client accesses a web site or otherwise requests data to be transmitted from a server, the data may be transmitted in compressed or raw (i.e., uncompressed) form. If a web page, document or other content is transmitted in raw form, it is typically sent to the client “as is” (e.g., as it is stored on the server). If sent in compressed form, some sort of compression is applied to the content to reduce its size. The advantage with the latter option is that less data needs to be transmitted, thereby taking less time and communication bandwidth to deliver it to the client.
There are various types of (or algorithms for) compression, and different levels for compressing a set of data by different amounts or ratios. Each level of compression has an associated trade-off between the amount of effort and/or time needed to perform the compression versus the size of the compressed data.
Computing devices that serve compressed data to clients often select one type and/or level of compression to apply to all served data that can be compressed. When applied on a large scale (e.g., for the majority of data served to clients), the selected compression may offer a reasonable tradeoff between the effort needed to perform the compression and the size of the resulting data.
However, a great number of individual clients may be ill-served by having their data subjected to the same, static, level of compression selected for all clients. For example, the selected level of compression may be too low for a client that receives data over a dial-up modem connection. Conversely, a user enjoying a high bandwidth connection may be better served with a lower level of compression or no compression at all.